package com.ktgj.customer.service;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

import com.ktgj.customer.domain.*;
import com.ktgj.customer.domain.back.CommonTravelersBack;
import com.ktgj.customer.domain.back.PassengerDocumentsBack;
import com.ktgj.customer.domain.vo.*;
import com.ktgj.customer.domain.vo.CommonTravelersVo;
import com.ktgj.customer.vo.NationVo;
import org.apache.ibatis.annotations.Param;

import javax.servlet.http.HttpServletRequest;

/**
 * 常用旅客信息Service接口
 * 
 * @author ruoyi
 * @date 2021-09-01
 */
public interface ICommonTravelersService 
{
    /**
     * 查询常用旅客信息
     * 
     * @param commonTrvelersId 常用旅客信息ID
     * @return 常用旅客信息
     */
    public CommonTravelers selectCommonTravelersById(Long commonTrvelersId);

    /**
     * 查询常用旅客信息列表
     * 
     * @param commonTravelers 常用旅客信息
     * @return 常用旅客信息集合
     */
    public List<CommonTravelers> selectCommonTravelersList(CommonTravelers commonTravelers);

    /**
     * 新增常用旅客信息
     * 
     * @param commonTravelers 常用旅客信息
     * @return 结果
     */
    public int insertCommonTravelers(CommonTravelers commonTravelers);

    /**
     * 修改常用旅客信息
     * 
     * @param commonTravelers 常用旅客信息
     * @return 结果
     */
    public int updateCommonTravelers(CommonTravelers commonTravelers);

    /**
     * 批量删除常用旅客信息
     * 
     * @param commonTrvelersIds 需要删除的常用旅客信息ID
     * @return 结果
     */
    public int deleteCommonTravelersByIds(Long[] commonTrvelersIds);

    /**
     * 删除常用旅客信息信息
     * 
     * @param commonTrvelersId 常用旅客信息ID
     * @return 结果
     */
    public int deleteCommonTravelersById(Long commonTrvelersId);

    /**
     * 编辑旅客信息
     * */
    public int saveCommonTravelersByMemberId(CommonTravelersVo commonTravelersVo);

    /**
     * 查询国家列表
     * */
    public NationVo selectNationVo(String nationName) throws Exception;

    /**
     * 查询待编辑的常用旅客信息
     * */
    public CommonTravelersVo selectPassengerInformation(Long commonTrvelersId, Long customerId);

    /**
     * 修改常用旅客信息
     * */
    public int modifyPassenger(CommonTravelersVo commonTravelersVo) throws Exception;

    public List<CommonPassenger> queryPassengerByCustomerId(Long customerId, Long commonTrvelersId, String certificateType);

    CommonTravelersDto queryByCustomerIdCommon(Long customerId);

    /**
     * 删除常用旅客信息
     * */
    public int tombstone(Long commonTrvelersId, Long customerId) throws Exception;

    /**
     * 查询会员全部常用旅客
     * */
    public LetterVo generalInformation(Long memberId);

    /**
     * 会员常用旅客信息列表（远程）
     * */
    public List<CustomerTraveler> CustomerTravelerList(Long memberId);

    /**
     * 火车票添加乘车人
     * @param token
     * @param information
     * @return
     */
    public int insertCommonTraveler(String token, PassengerInformation information);

    /**
     * 火车票添加乘车人(CRM)
     * @param customerId
     * @param information
     * @return
     */
    public int insertCommonTravelerCrm(Long customerId, PassengerInformation information);

    /**
     * 旅客列表
     * @param token
     * @return
     */
    public List<PassengerList> passenger(String token);

    /**
     * 查询国家列表
     * @return
     */
    public List<Nation> selectNationList();

    /**
     * 火车票-乘车人列表
     * */
    public LetterDto passengerList(Long memberId, String phone) throws Exception;

    /**
     * 火车票-乘车人列表(CRM)
     * */
    public List<CommonTravelersDtoVo> passengerListCrm(Long memberId, String phone) throws Exception;

    /**
     * 火车票-乘车人详细信息
     * */
    public CommonTravelersDetailsVo passengerDetails(String commonTrvelersId, Customer customer) throws Exception;

    /**
     * 火车票-修改乘车人信息
     * */
    public int updatepassenger(CommonTravelers commonTravelers) throws Exception;

    /**
     * 机票-乘客列表
     * */
    public List<CommonTravelers> fileCommonTravelers(Long customerId);

    /**
     * 后端——查询常用旅客信息
     * */
    public List<CommonTravelersBack> backSelectCommonTravelersBack(Long customerId) throws Exception;

    /**
     * 后端——新增常用旅客
     * */
    public int backInsertCommonTravelersBack(CommonTravelersBack commonTravelersBack, Long customerId) throws Exception;

    /**
     * 后端——修改常用旅客
     * */
    public int backUpdateCommonTravelers(CommonTravelersBack commonTravelersBack, Long customerId) throws Exception;

    /**
     * 后端——删除常用旅客证件信息
     * */
    public int backDeletePassengerDocuments(Long commontrvelersId) throws Exception;

    /**
     * 后端——修改常用旅客证件信息
     * */
    public int backUpdatePassengerDocuments(PassengerDocuments passengerDocuments) throws Exception;

    /**
     * 后端——查询待修改的旅客证件信息
     * */
    public CommonTravelersBack backSelectDocumentsById(Long passengerDocumentsId) throws Exception;

    /**
     * 门票旅客列表
     * */
    public Map<String, List<Map<String, Object>>> ticketsTravelerList(HttpServletRequest request);
}
